package com.ruicar.afs.cloud.bizcommon.rules.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.ruicar.afs.cloud.bizcommon.enums.rules.AtomComponentType;
import com.ruicar.afs.cloud.bizcommon.enums.rules.AtomOperatorScopeType;
import com.ruicar.afs.cloud.bizcommon.vo.rules.AfsRuleAtomVo;
import com.ruicar.afs.cloud.common.core.entity.BaseEntity;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

@TableName("afs_rule_atom")
@Data
public class AfsRuleAtom extends BaseEntity {
    /**
     * 原子key
     */
    @NotBlank(message = "原子key不能为空")
    @NotNull(message = "原子key不能为空")
    private String atomKey;
    /**
     * 原子中文名
     */
    @NotBlank(message = "原子名称不能为空")
    @NotNull(message = "原子名称不能为空")
    private String atomName;
    /**
     * 原子组件类型;dic-数据字典
     * custDic-自定义字典
     * date-日期
     * text-文本
     * number-数字
     * cascader-级联类型
     */
    @NotNull(message = "原子类型不能为空")
    private AtomComponentType atomType;
    /**
     * 可用操作符范围;all-所有
     * cust-自定义
     */
    @NotNull(message = "原子操作符范围不能为空")
    private AtomOperatorScopeType atomOperatorScope;
    /**
     * 取值表达式
     */
    @NotBlank(message = "原子取值表达式不能为空")
    @NotNull(message = "原子取值表达式不能为空")
    private String atomValueExpress;
    /**
     * 原子组件配置信息;配置json串
     */
    @NotBlank(message = "原子组件配置信息不能为空")
    @NotNull(message = "原子组件配置信息不能为空")
    private String atomComponentConfig;

    public static AfsRuleAtom convertFromVo(AfsRuleAtomVo vo) {
        AfsRuleAtom afsRuleAtom = new AfsRuleAtom();
        afsRuleAtom.setAtomKey(vo.getAtomKey());
        afsRuleAtom.setAtomName(vo.getAtomName());
        afsRuleAtom.setAtomType(vo.getAtomType());
        afsRuleAtom.setAtomOperatorScope(vo.getAtomOperatorScope());
        afsRuleAtom.setAtomValueExpress(vo.getAtomValueExpress());
        afsRuleAtom.setAtomComponentConfig(vo.getAtomComponentConfig());
        return afsRuleAtom;
    }
}
